package persistencia;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import dominio.Autor;
import dominio.Estado;
import dominio.Persona;

public class EstadoDAO {
	
	public static Estado newEstado(int articulo, String estado) throws Exception{
		Estado result=null;
		result = new Estado();
		String SQL="Select idArticulo, estado, fecha from EstadoArticulo where idArticulo=? and estado=?";
		Conexion bd=null;
		Exception ex=null;
		PreparedStatement p=null;
		try {
				bd = Broker.get().getBD();
				p = bd.prepareStatement(SQL);
				p.setInt(1, articulo);
				p.setString(2, estado);
				ResultSet r = p.executeQuery();
				if (r.next()) {
					System.out.println();
					result.setIdArticulo(Integer.parseInt(r.getString(1)));
					result.setEstado(r.getString(2));
					result.setFecha(r.getString(3));
				} else {
					throw new Exception("El estado con id " + estado + " no existe");
				}			
		} catch (Exception e) {
			ex = e;
		}
		finally{
			bd.close();
			if (ex!=null)
				throw ex;
		}
		return result;
	}
	
	public static void delete(Estado est) throws Exception {
		String SQL="Delete from Estado where estado=?";
		Conexion bd=null;
		Exception ex=null;
		PreparedStatement p=null;
		try {
			bd=Broker.get().getBD();
			p=bd.prepareStatement(SQL);
			p.setString(1, est.getEstado());
			p.executeUpdate();
		}
		catch (Exception e) {
			ex=e;
		}
		finally {
			bd.close();
			if (ex!=null)
				throw ex;
		}	
	}
	
	public static void insert(Estado estado) throws Exception{
		String SQL="Insert into Estado values (?)";
		Conexion bd=null;
		Exception ex=null;
		PreparedStatement p=null;
		try {
			bd=Broker.get().getBD();
			p=bd.prepareStatement(SQL);
			p.setString(1, estado.getEstado());
			p.executeUpdate();
		}
		catch (Exception e) {
			ex=e;
		}
		finally {
			bd.close();
			if (ex!=null)
				throw ex;
		}
	}
	
	public static void deleteEstadoArticulo(Estado estado) throws Exception {
		String SQL="Delete from EstadoArticulo where estado=? and idArticulo=?";
		Conexion bd=null;
		Exception ex=null;
		PreparedStatement p=null;
		try {
			bd=Broker.get().getBD();
			p=bd.prepareStatement(SQL);
			p.setString(1, estado.getEstado());
			p.setInt(2, estado.getIdArticulo());
			p.executeUpdate();
		}
		catch (Exception e) {
			ex=e;
		}
		finally {
			bd.close();
			if (ex!=null)
				throw ex;
		}	
	}
	
	public static void insertEstadoArticulo(Estado estado) throws Exception{
		String SQL="Insert into EstadoArticulo values (?,?,?)";
		Conexion bd=null;
		Exception ex=null;
		PreparedStatement p=null;
		try {
			bd=Broker.get().getBD();
			p=bd.prepareStatement(SQL);
			p.setInt(1, estado.getIdArticulo());
			p.setString(2, estado.getEstado());
			p.setString(3, estado.getFecha());
			p.executeUpdate();
		}
		catch (Exception e) {
			ex=e;
		}
		finally {
			bd.close();
			if (ex!=null)
				throw ex;
		}
	}

}
